import axios from 'axios'
import { MessageBox, Message, Loading } from 'element-ui'
import NProgress from 'nprogress' // 引入nprogress插件
import 'nprogress/nprogress.css' // 这个nprogress样式必须引入
// let loadingInstance = false; //蒙版实例
// let baseURL = "http://10.168.1.123:8100/api";
// console.log(process.env.VUE_APP_BASE_API, "process.env.VUE_APP_BASE_API")
// console.log(process.env, ".VUE_APP_BASE_API")

// console.log(process)
// console.log(process.env, "process.env.VUE_APP_BASE_API")

// 判断当前是开发环境还是生产环境
// let baseURL = process.env.NODE_ENV === "development" ?process.env.VUE_APP_BASE_API : process.env.VUE_APP_BASEWEB_API
let baseURL = process.env.VUE_APP_BASE_API
const service = axios.create({
  baseURL,
  timeout: 20000,
})

//获取url携带的参数
function getUrlParams() {
  //获取url的参数
  let url = window.location.href
  // 通过 ? 分割获取后面的参数字符串
  let urlStr = url.split('?')[1]
  // 创建空对象存储参数
  let obj = {}
  if (urlStr) {
    // 再通过 & 将每一个参数单独分割出来
    let paramsArr = urlStr.split('&')
    for (let i = 0, len = paramsArr.length; i < len; i++) {
      // 再通过 = 将每一个参数分割为 key:value 的形式
      let arr = paramsArr[i].split('=')
      obj[arr[0]] = arr[1]
    }
  }
  return obj
}

service.interceptors.request.use(
  (config) => {
    // NProgress.start() // 设置加载进度条(开始..)
    // let token = window.localStorage.getItem("token");
    // if (token) {
    //   config.headers.Authorization = token;
    // }

    // wgn的token
    let urlParams = getUrlParams()
    if (urlParams.accessToken) {
      // window.localStorage.setItem('accessToken', urlParams.accessToken)
      let accessToken = window.localStorage.getItem('accessToken')
      if (accessToken) {
        // 将Token塞到请求头里
        config.headers.Token = accessToken
      }
    } else {
      // oms
      // if (urlParams.ticket) {
      //   let Ticket = window.localStorage.getItem('ticket')
      //   if (Ticket) {
      //     // 将Ticket塞到请求头里
      //     config.headers.Ticket = Ticket
      //   }
      // }
      // oms的时候将ticket转换成CtrToken
      let CtrToken = window.localStorage.getItem('Ctr-Token')
      if (CtrToken) {
        // 将Token塞到请求头里
        config.headers['Ctr-Token'] = CtrToken
      }
    }
    return config
  },
  (error) => {
    // console.log(error);
    // 取消请求
    return Promise.reject(error)
  },
)

service.interceptors.response.use(
  (response) => {
    //console.log(response, '78997yyu')
    const res = response.data

    if (response.config.responseType == 'blob') {
      if (response.headers.get('Content-Disposition')) {
        let type = response.headers.get('Content-Disposition')
        // console.log( type.substring(type.lastIndexOf('.') + 1))
        res.fileType = type.substring(type.lastIndexOf('.') + 1)
      }
      // NProgress.done() // 设置加载进度条(结束..)
      return res
    }

    if (res.resultCode === 0) {
      return res;
    }

    if (response.status == 0) {
      // let urlCtrToken = response.headers['ctr-token']
      // if (urlCtrToken) {
      //   window.localStorage.setItem('Ctr-Token', urlCtrToken)
      // }
      // wgn\oms登录重定向
      // if (res.code == 30000) {
      //   // if (!window.location.href.includes('login')) {
      //   //   parent.location.href = res.data
      //   // }
        
      //   window.localStorage.removeItem('accessToken')
      //   window.localStorage.removeItem('Ctr-Token')
        
      //   parent.location.href = res.data

      //   return Promise.reject()
      // }
      //return res
    }

    if (res && res.code !== 0) {
      Message({
        message: res.mesg || 'Error',
        type: 'error',
        duration: 5 * 1000,
      })
      return Promise.reject(new Error(res.mesg || "Error"));
    }
    // NProgress.done() // 设置加载进度条(结束..)
    // return res
  },
  (error) => {
    Message({
      message: error.mesg || 'Error',
      type: 'error',
      duration: 5 * 1000,
    })
    return Promise.reject(error)
  },
)

export default service
